#include "tim7.h"


// ��ʼ��PA8Ϊ���������PC9Ϊ��������
// 注意: PA8的UV灯PWM控制已移到app_uv_pwm.c中的app_uv_pwm_init()实现
void Uv_GPIO_Configuration(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;

    // ʹ��GPIOA��GPIOC��ʱ�ӣ�APB2����ʱ�ӣ�
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);


    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);

    // 注释掉PA8配置,因为PA8已在app_uv_pwm_init()中配置为TIM1_CH1 PWM
    // // ����PA8Ϊ�������
    // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;          // ѡ��PA8����
    // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   // �������ģʽ
    // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  // ����ٶ�50MHz
    // GPIO_Init(GPIOA, &GPIO_InitStructure);             // ��ʼ��GPIOA

    // ����PC9Ϊ�������루��������ɸ�Ϊ��������򸡿����룩
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;          // ѡ��PC9����
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      // ��������ģʽ
    // �����������룬��Ϊ��GPIO_Mode_IPD
    // ���踡�����룬��Ϊ��GPIO_Mode_IN_FLOATING
    GPIO_Init(GPIOC, &GPIO_InitStructure);             // ��ʼ��GPIOC



    // 注释掉UvLight_Close,UV灯控制已由app_uv_pwm.c接管
    // //Ĭ�Ϲر�Uv��
    // UvLight_Close;
    //UvLight_Open;

//PB4

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;          // ѡ��PB4����
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   // �������ģʽ
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  // ����ٶ�50MHz
    GPIO_Init(GPIOB, &GPIO_InitStructure);             // ��ʼ��GPIOB

    GPIO_SetBits(GPIOB, GPIO_Pin_4);

    // 注意: PC3按键初始化已移到 Key_EXTI_Init() 函数中
}







// ��ʼ��TIM7��ʵ��1s�ж�
void TIM7_Configuration(void)
{
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
    
    // 1. ʹ��TIM7ʱ�ӣ�APB1���裩
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7, ENABLE);
    
    // 2. ���ö�ʱ����������
    TIM_TimeBaseStructure.TIM_Prescaler = 7199;       // Ԥ��Ƶ����7200��Ƶ��72MHz/7200=10kHz��
    TIM_TimeBaseStructure.TIM_Period = 9999;          // �Զ���װ��ֵ��������9999�����10kHz��10000=1s��
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // ���ϼ���ģʽ
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;     // ʱ�Ӳ���Ƶ
    TIM_TimeBaseInit(TIM7, &TIM_TimeBaseStructure);
    
    // 3. ʹ��TIM7�����ж�
    TIM_ITConfig(TIM7, TIM_IT_Update, ENABLE);
    
    // 4. ����NVIC�ж����ȼ�
    NVIC_InitStructure.NVIC_IRQChannel = TIM7_IRQn;          // TIM7�ж�ͨ��
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; // ��ռ���ȼ����ɸ������������
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;        // �����ȼ����ɸ������������
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;           // ʹ���ж�ͨ��
    NVIC_Init(&NVIC_InitStructure);
    
    // 5. ����TIM7������
    TIM_Cmd(TIM7, ENABLE);

}

// TIM7中断服务函数(1s调用一次)
void TIM7_IRQHandler(void)
{
    // 检查中断标志位
    if (TIM_GetITStatus(TIM7, TIM_IT_Update) != RESET)
    {
        // 清除中断标志位(必须执行,否则重复进入中断)
        TIM_ClearITPendingBit(TIM7, TIM_IT_Update);

        // ========== 新逻辑: 系统时间tick和UV工作时间累计tick ==========
        extern void user_config_tick_1s(void);
        extern void app_uv_worktime_tick(void);

        user_config_tick_1s();      // 系统时间tick
        app_uv_worktime_tick();     // UV工作时间累计tick(新)
    }
}


/* ===================== 注意 ===================== */
// PC3按键功能已移至app_button.c实现
// PB13/PB14/PC3三个按键统一在app_button.c中处理
